/*
 * GeneradorCelda.h
 *      Author: sebastian
 */

#ifndef GENERADORCELDA_H_
#define GENERADORCELDA_H_
#include <stdlib.h>
#include "Celda.h"
#include "ButtonAzul.h"
#include "ButtonAmarillo.h"
#include "ButtonVioleta.h"
#include "ButtonVerde.h"
#include "ButtonRojo.h"
#include "MiniBarVertical.h"
#include "MiniBarHorizontal.h"
#include "Agujero.h"
#include "../Common/Jsonizable.h"
#include "enumProbaItem.h"
#include "enumItems.h"
#include "Estrella.h"
#include "Agujero.h"

class GeneradorCelda {
private:
	std::vector<int> probabilidades;
public:
	GeneradorCelda();

	GeneradorCelda(Json::Value& root);

	//Devuelve una celda en forma random, basandose en una probabilidad.
	Celda generarCelda();

	//Devuelve un ButtonAzul.
	Celda generarButtonAzul();

	//Devuelve un ButtonAmarillo.
	Celda generarButtonAmarillo();

	//Devuelve un ButtonVioleta.
	Celda generarButtonVioleta();

	//Devuelve un ButtonVerde.
	Celda generarButtonVerde();

	//Devuelve un ButtonRojo.
	Celda generarButtonRojo();

	//Devuelve una Estrellal.
	Celda generarEstrella();

	//Devuelve una MiniBarVertical de un tipo dado.
	Celda generarMiniBarVertical(int tipo);

	//Devuelve una MiniBarHorizontal de un tipo dado.
	Celda generarMiniBarHorizontal(int tipo);

	//Devuelve un Bloque.
	Celda generarAgujero();

	~GeneradorCelda() {};
};

#endif /* GENERADORCELDA_H_ */
